Method and means for correcting random and burst errors

ABSTRACT

A method and means is described for correcting multiple error bursts in data recorded on a storage medium in blocks, comprising a plurality of subblocks. After reading the data, decoded block check syndromes are algebraically summed with estimated block check syndromes to provide a set of syndromes for a code for locating subblocks having an error burst. This set of syndromes is decoded to identify each subblock having an error burst. Concurrently block level syndromes are computer to identify the locations and values of errors within the subblocks having error bursts. During writing, the data in all subblocks of a block is encoded and block level syndromes are generated for these subblocks. These block level syndromes are multiplied by a series of preselected weighting factors (α 1  . . .α 1 (B-1)) according to the location index 1 of the sublock within the block and as multiplied, each is stored in a different one of B buffers. These are cumulatively summed to produce block check syndromes, which are encoded after the last subblock of the block is written to provide check bytes for their protection. These check bytes and the weight cumulative sums are stored on the medium at the end of the block as block check syndromes.

DESCRIPTION

1. Technical Field

This invention relates to a method and means for locating and correctingboth random and burst errors in data recorded on a storage medium inblocks comprising subblocks, and more specifically relates to such amethod and means which includes error correction code (ECC) for whichdecoded and estimated block check syndromes are generated.

2. Background of the Invention

In U.S. Pat. No. 4,706,250 assigned to the assignee of the presentinvention, there is disclosed a two-level error correction codestructure in an improved multibyte error-correcting subsystem. Data isformatted on a disk track into a number of subblocks, each within arespective block. There are also two sets of three subblock check bytes.One set is associated with the even phases and the other with the oddphase, this being due to two-phase interleaving.

With this arrangement, it is possible to correct one error in eachsubblock at a first (subblock) level of correction, and correct twoerrors in one of the subblocks of the block at a second (block) level ofcorrection. Thus, if there are two or more errors in a subblock, due forexample to an error burst, the ECC will be unable to correct all theerrors. To partially address this problem, the size of the subblockscould be reduced from say 100 bytes to 50 bytes to reduce the likelihoodthat more than one error would occur in each subblock. But, associatedwith each subblock (as shown in FIG. 1 of U.S. Pat. No. 4,706,250) is aset of subblock check bytes which, as illustrated, are two-wayinterleaved. Hence doubling the number of subblocks doubles the numberof subblock check bytes, thus increasing the overhead.

In the copending application of Eggenberger et. al., U.S. Ser. No.247,461, filed Sept. 21, 1988, assigned to the assignee of the presentinvention, a method and means are disclosed capable of correcting bothrandom conventional errors and a long burst error of up to N consecutivebytes in a two-level ECC system. This is achieved by adding at the endof each block a series of N sequential parity check bytes. Duringreading, after the generation of the ECC syndromes, parity syndromes aregenerated by comparing parity check bytes computed from the data bytesand check bytes as read with the parity check bytes as written. Eachsyndrome is a byte in length. In response to a long-burst error, apointer is generated to the first of N consecutive bytes in a block thatcould have been influenced by the error. Then those ECC syndromes notdependent on the N bytes identified by the pointer are used to correctany correctable errors. Following this, the parity syndromes areadjusted according to the errors thus corrected. The adjusted paritysyndromes are then used to correct correctable errors in the N bytesindicated by the pointer. Any unused ECC syndromes are adjustedaccording to the errors thus corrected by the adjusted parity syndromes;whereupon the adjusted ECC syndromes are used to correct all correctableerrors then remaining. This method and means operates satisfactorily butrequires that N parity bytes be added at the end of each block in orderto correct an error burst N bytes long, and requires a pointer to eacherror burst.

It is desirable to provide an improved two-level ECC system of the abovegeneral type capable of locating any preselected number of subblocks inerror containing up to a preselected number of bytes in error, whethernonconsecutive or in bursts. Also, it would be desirable to provide sucha system wherein the location of the subblocks in error may be specifiedeither by an externally generated pointer or the location may beunknown, without reducing first (subblock) level correction capability.

Toward this end, and according to the invention, a method and means areprovided for correcting multiple burst errors in a storage medium onwhich data is recorded in blocks that comprise subblocks of data bytesand redundant check bytes for which decoded and estimated blocksyndromes are generated during reading. After reading the data, thedecoded block syndromes for each block are algebraically summed with theestimated block syndromes for that block to provide a set of syndromesfor a code which locates subblocks in that block having error bursts.This set of syndromes is then decoded to generate algebraic pointer(s)to identify each subblock having an error burst. Thereafter blocksyndromes for each subblock having an error burst are computed at 33 andused in conjunction with previously computed subblock syndromes from 20for those subblocks and both sets of syndromes are decoded to identifythe locations and the values of the errors within those subblocks havingerror bursts.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic block diagram of the encoder portion of anapparatus embodying the invention;

FIG. 2 is a schematic block diagram showing in more detail portions ofthe apparatus of FIG. 1 which computes block check bytes; and

FIGS. 3A-3D, when taken such that the right edge of FIG. 3A is matchedto the left edge of FIG. 3B, the right edge of FIG. 3B to the left edgeof FIG. 3C, and the right edge of FIG. 3C matched to the left edge ofFIG. 3D constitute a block diagram of the decoder portion of theapparatus embodying the invention.

DESCRIPTION OF PREFERRED EMBODIMENT INTRODUCTION

The method and apparatus embodying the invention are shown applied to atwo-level ECC system of the type disclosed in the above-cited U.S. Pat.No. 4,706,250. As shown in FIG. 1 of said patent, data is recorded inblocks of variable (or fixed) length each comprising a plurality ofsubblocks, of the same length except possibly the last. Each subblockcomprises a variable (or fixed) number of data bytes and six subblockcheck bytes for first level (subblock) error correction. At the end ofthe last subblock in the block are four CRC bytes for data integritychecking, followed by two block check bytes for second level (block)error correction.

In this two-level ECC system, the data is encoded on the subblock(first) level by a Reed-Solomon (RS) [n, n-r₁, r₁ +1]-encoder, where nis the number of bytes in the encoded subblock, r₁ is the number ofsubblock check bytes in the encoded subblock, and r₁ +1 is the minimumHamming distance or the separation achieved among subblocks. Thisdistance suffices for the correction of up to t₁ = r₁ /2 byte errors ina subblock. The fundamental feature of this prior art two-levelarchitecture is to compute r₂ block level syndromes for a second [n,n-r₂, r₂ +1]-RS code. These syndromes are computed for each subblock ina block and added cumulatively to produce r₂ block check bytes which areshared by all subblocks. These block check bytes are stored after thelast subblock in a block.

If the location of a subblock with an error burst is specified by anexternally generated pointer and the number of errors in that subblockdoes not exceed r₁ /2, , then the errors can be corrected by a subblockleve decoder. If the number of errors does not exceed (r₁ +r₂)/2 , thenthe errors may be corrected by combining the correction power of thesubblock and block level check bytes.

If the location of the subblock with an error burst is unknown, however,this prior art two-level ECC system can locate the subblock with theerror burst and correct the error burst provided the number of errors(i.e. its weight) does not exceed r₁ /2 +c. This burst location andcorrection is achieved at the cost of lowering the maximal subblockerror correction capability in all other subblocks from r₁ /2 -c where cis a fixed design parameter which is a positive integer such that

    c≦min{ (r.sub.1 +r.sub.2)/2 - r.sub.1 /2 ,  r.sub.1 /2 }

DESCRIPTIVE OVERVIEW

It should be noted that, in FIGS. 1-3, a diagonal slash across an inputor output signifies that it consists of the specified number of bytes inparallel. Also, as hereinafter used, the term "error burst" is definedas any number of bytes with errors, whether or not the errors areconsecutive, where this number exceed the first level (i.e., subblock)correction capability of the apparatus.

According to the invention, there are four parameters that establish theerror correction capability of the two-level ECC apparatus. These arer₁, r₂, r₃ and B where:

r₁ is the number of subblock (first level) check bytes per subblock;

r₂ is the number of block (second level) check bytes per block;

r₃ is the number of the check bytes for the block check bytes, thenumber being sufficient so that all of the bytes in a block are equallyprotected; and

B≧2T+S, where T and S denote the numbers of correctable subblocks witherror bursts without and with, respectively, externally generatedpointers to the correctable subblocks with error bursts. Thus, if B=4,correction can be achieved if T=0, with S≦4; if T=1, with S≦2; and withT=2, with S=0. The maximal number of errors in a subblock that can becorrected is ##EQU1##

As illustrated in FIG. 1, an encoder 10 encodes (n-r₁) bytes of data.The encoded n bytes of data are stored in a data field on a disk track9. The encoded data is also supplied to syndrome computation circuitry11 which generates r₂ block syndromes for each of the subblocks of theblock. As earlier noted, each syndrome is one byte in length. These r₂syndromes are supplied to block check computation circuitry 12 which, asshown in FIG. 2, comprises circuitry 13 and 14.

Circuitry 13 comprises means for multiplying the r₂ block syndromes foreach subblock by a series of preselected cumulative weighting factors{α^(l), . . . , α^(l)(B-1) } according to the location index 1 of thesubblock within the block, where α is the primitive generator of theGalois finite field.

The different factor-weighted syndromes from each of the B buffers 15are cumulatively summed by circuitry 14 for all the subblocks within theblock to generate a total of r₂ B block syndromes, which are reorderedin a preselected fashion as shown at 16. After the last subblock of theblock is written, encoder 17 (FIG. 1) encodes the r₂ B block checksyndromes and appends to them r₃ additional check bytes. The r₂ B blockcheck syndromes plus the r₃ additional check bytes are then stored atthe end of the block on disk track 9 following the last subblock, N, inthe block.

During reading of the data, and as illustrated in FIG. 3A, the n databytes as read from each subblock of a block are stored in a buffer 18and also concurrently fed to subblock syndrome computation circuitry 19.Circuitry 19 computes, for each subblock, subblock syndromes that arestored in a buffer 20. Those subblock syndromes that do not correspondto a subblock with an error burst are passed through a subblock datatraffic controller 21 to a decoder 22. Externally generated pointers tosubblocks with error bursts, if available, are also supplied tocontroller 21, stored in a location register 42. Decoder 22 produces inbus 23 an estimated error pattern for each of the subblocks withouterror bursts. These estimated error patterns in bus 23 are algebraicallysummed at 24 with the subblock data stored in buffer 18 to correct allcorrectable errors in these subblocks without error bursts and therebyprovide in bus 25 corrected subblock data for those subblocks withouterror bursts.

Block level syndromes are then computed for each subblock from theestimated error pattern (in 23) by circuitry 26 (FIG. 3B) and from thecorrected subblock data (in 25) by circuitry 27. Using block check bytecomputation circuitry 28 identical with that described for circuitry 12,the block level syndromes for the corrected subblock data are multipliedby the aforementioned series of preselected cumulative weighting factorsaccording to their order of occurrence within the block and each blocklevel syndrome as multiplied by a different weighting factor is storedin a respective one of the B buffers 15; and then these factor-weightedsyndromes from the B buffers 15 are cumulatively summed to produceestimated block check syndromes covering all the subblocks of thatblock.

Decoder 30 (FIG. 3C) decodes the encoded block check syndromes generatedduring writing for all subblocks of each block. Each of these decodedblock check syndromes is then algebraically summed with itscorresponding estimated block check syndrome by a respective summingcircuit 31 to provide a set of syndromes for a code for locating thosesubblocks having error bursts. Decoder 32 then decodes this set ofsyndromes to produce up to T algebraic pointers to the subblocks witherror bursts. Concurrently, for each subblock with an error burst,decoder 32 produces a set of r₂ block level syndromes. Due to the effectof miscorrection at the subblock level, these r₂ block level syndromesmust be updated. This is done by algebraically summing at 33 the blocklevel syndromes computed by decoder 32 with the block level syndromescomputed by circuitry 26 from the estimated error pattern syndromes toproduce block level syndromes in bus 34 for the true error pattern forthose subblocks having error burst.

Subblock data traffic controller 35 has as inputs: n representing thedata bytes as read; S representing updated externally generated pointersfrom updated pointer set 42 to subblocks with error bursts; Trepresenting algebraic pointers obtained from decoder 32 to subblockswith error bursts; the estimated crror pattern from bus 23 that had beenstored in a buffer 36 (FIG. 3B), and the block level syndromes for thetrue error pattern from bus 34.

For those subblocks without an error burst, controller 35 directs the ndata bytes as read and the buffered 2r₁ bytes for the estimated errorpattern from buffer 36 to an algebraic summing circuit 37 to correct allsubblocks without error bursts.

For those subblocks with error bursts, controller 35 directs to decoder39 r₂ block syndromes for the true error pattern from bus 34 and alsothe r₁ subblock syndromes from buffer 20 for only those subblocks witherror bursts. From these inputs decoder 39 produces an error patternthat is algebraically summed at 40 with only those of the subblocks asread which contain error bursts to provide a block of data in bus 41 inwhich all errors and erasures have been corrected up to the preselectedcapability of the apparatus.

As illustrated, all subblocks as read are buffered at 18 and directed tothe traffic controller 35; and said controller channels those subblockswith error bursts to algebraic summing circuit 40 and those withouterror bursts via controller 35 to summing circuit 37. However, ifpreferred, the apparatus could be modified to buffer at 18 only thosesubblocks believed to have error bursts and to send only these viacontroller 35 to summing circuit 40.

The functions performed by computation circuitry 19 and C₁ -decoder 22;by circuitry 26, 27 and C^(B) -decoder 32; by C₃ -decoder 30; and byC₁,2 -decoder 39 may be provided by respective separate semiconductorchips, such as the WD60C80 Error Detection and Correction Chip (EDAC)marketed by Western Digital Corp. of Irvine, Calif.

The encoder portion and decoder portion of the apparatus embodying theinvention will now be described in greater detail, followed by anAppendix setting forth the proof establishing the operability andefficacy of the method and means herein disclosed.

DETAILED DESCRIPTION OF ENCODER PORTION (FIGS. 1 AND 2)

Assume that the data alphabet is formally represented by a finite,Galois Field with q symbols that is denoted by GF(q). For practicalstorage applications q is most commonly taken as 2⁸, i.e., each symbolin GF(2⁸) corresponds to a byte.

The l-th data subblock consists of the symbols m_(j),l GF(q), where0≦j≦n-r₁ -1 and 0≦l≦N-1. This subblock is first encoded by the subblocklevel [n, n-r₁, r₁ +1]-RS encoder 10. Mathematically, it is convenientto describe this data subblock in terms of the polynomial ##EQU2##

The dummy variable x is introduced so that its powers can represent theorder of appearance of the bytes in the subblock. Thus the j-th bytem_(j),l appears as the coefficient of x^(j), 0≦j≦n-r₁ -1, in thepolynomial m₁ (x) that represents the l-th subblock. The polynomialformulation is convenient since it allows for the description of theencoding operation as polynomial multiplication. Encoder 10 for thesubblock level code (C₁ -code) is characterized by the encodingpolynomial ##EQU3##

The symbol α in GF(q) denotes a root of a primitive irreduciblepolynomial whose distinct powers form a representation of the nonzeroelements of GF(q). Such a polynomial is a divisor of x^(q-1) -1. Thel-th encoded subblock is represented by the polynomial

    c.sub.1 (x)=m.sub.1 (x)g.sub.1 (x)                         (3)

The encoding operation can be described in the frequency transformdomain as forcing r₁ zeroes at the Galois Field symbol frequencies{α^(i) }, i.e. c_(l) (α^(i))=0, for 0≦i≦r₁ -1.

The C_(l) -coded subblocks {c_(l) (x)},0≦i≦r₂ -1, are written on disktrack 9 and, as shown in FIG. 1, are also simultaneously processed toproduce shared block check syndromes using circuitry 12. The computationof these check syndromes is performed in two steps. In the first step,(see FIG. 1) the block C₂ -syndrome values {(c₁ (α^(r) 1^(+i))},0≦i≦r₂-1, are evaluated at the Galois Field frequencies at which the C₂-zeroes are located. These nulls are at {α^(r) 1^(+i) }, 0≦i≦r₂ -1, thezeroes of the encoding polynomial g₂ (x) for the C₂ -code which is an[n, n-r₂, r₂ +1]-RS code. The explicit expression for this encodingpolynomial is ##EQU4##

The encoding process as thus far described is known from the prior art.However, according to an important feature of the invention, in thesecond step each syndrome value c_(l) (α^(r).sbsp.1^(+i)),0≦i≦r₂ -1, isweighed by a factor α^(bl) and cumulatively-weighted syndrome sums aregenerated as follows: ##EQU5##

In the weight factor α^(bl), the parameter 1, 0≦l≦N-1 provides thesubblock location inside the block, and the parameter b, 0≦b≦B-1 indexesthe B buffers 15 in which these cumulatively-weighted syndromes arecomputed and which are shown in FIG. 2. The total number ofcumulatively-weighted C₂ -syndromes is r₂ B bytes, which are sharedamong all the subblocks in a block and referred to as block checksyndromes. These block check syndromes are generally stored after thelast written subblock in a block.

The block check syndromes have a special status that has to be addressedin the encoding portion. The r₂ B block check syndromes computed inEquation (5) differ from the rest of the stored data because they arenot protected from errors. This however is easily overcome by encodingthem by using [r₂ B+r₃, r₂ B, r₃ +1]-RS encoder 17. The parameter r₃ ischosen such that equal error protection for all stored data bytes isachieved.

If random and burst error statistics for the storage channel areavailable, then r₃ can be chosen such that equal error protection in aprobabilistic sense is achieved. However, if accurate statistics are notavailable, a worst-case choice for r₃ can be made as follows. Typicallyr₂ B is much smaller than n and hence the block check syndromes can beconsidered as constituting a shortened data subblock. Assume that thechannel can cause, in the worst case, up to t errors and s erasures inany subblock, such that 2t+s≦r₁ +r₂, where an error is defined as aperturbation, the location and value of which are unknown, and anerasure is defined as a perturbation whose location is known by anexternal pointer, such that only the value of the error must becomputed. Then r₃ =r₁ +r₂ ensures equal error protection for all databytes. Encoder 17 thus protects the block check syndromes.

The enhanced error correction capability of applicants' improvedtwo-level architecture composed of the subblock level [n, n-r₁, r₁ +1]and block level [n, n-r₂, r₂ +1]-RS codes C₁ and C₂, respectively, willnow be discussed. Let t denote the desired number of correctable errorsand s the desired number of correctable erasures in a subblock. Withthese values of the desired performance parameters s and t established,the design parameters r₁ and r₂ of the two-level architecture mustsatisfy the inequality 2t+s≦r₁ +r₂ for each subblock to correct allerrors.

A subblock is declared to have an error burst if its number of errorsand erasures satisfy the inequalities r₁ <2t+s≦r₁ +r₂. Let us denote byT the number of subblocks with error bursts whose locations are unknownand by S the number of subblocks with error bursts whose locations aregiven by externally generated pointers from set 42, both of which typesof errors are to be corrected. If the number of B buffers of length r₂each, which is the third design parameter of the proposed two-levelarchitecture, is chosen to satisfy the inequality 2T+S≦B, then T+S willbe the total number of correctable subblocks with error bursts. All theother subblocks for which 2t+s≦r₁ are without burst errors and arecorrectable by the subblock level code C_(l).

DETAILED DESCRIPTION OF DECODER PORTION (FIGS. 3A-D)

The read back l-th subblock c_(l) (x) differs from the written C_(l)-encoded subblock c_(l) (x) by the error pattern polynomial e_(l) (x) asfollows:

    c.sub.l (x)=c.sub.l (x)+e.sub.l (x)                        (6)

where ##EQU6##

The first step in the decoding process is computing the C₁ -syndromesc_(l) (α^(i)),0≦i≦r₁ -1 with circuitry 19. Since by definition c_(l)(α^(i))=0,0≦i≦r₁ -1, the C₁ -syndromes are as follows:

c_(l) (α^(i))=e_(l) (α^(i)), 0≦i≦r₁ -1 (7)

These syndromes are computed for all read back subblocks. In the nextstep C₁ -decoder 22 processes these syndromes to produce a minimalHamming distance estimate e_(l) (x) of the error pattern polynomialwhich is algebraically summed at 24 with the buffered read back subblockpolynomial c_(l) (x). This computation is performed only on thosesubblocks which do not have pointers. The processing of the C₁-syndromes of all the other subblocks is deferred to the C₁,2 -decoder39. C₁ -decoder 22 produces an estimated C₁ -codeword

    c.sub.l (x)=c.sub.l (x)-e.sub.l (x)                        (8)

where e_(l) (x) is the estimated error pattern.

If the l-th subblock has no error bursts, C₁ -decoder 22 generates anestimated error pattern e_(l) (x) that is identical with the actualerror pattern e_(l) (x). Hence, c_(l) (x)=c_(l) (x). If the l-thsubblock has an error burst and no pointer, attempting to correct it theC₁ -decoder 22 will either fail or the error burst will be miscorrected.A decoder failure 43 generates a pointer in 42 that locates the l-thsubblock as a subblock previously unknown to have an error burst. Toinclude all the subblocks of a block in the subsequent discussion, it isassumed that when the location of a subblock with an error burst isgiven either by a pointer from 42 or from a failure (see 43) of C₁-decoder 22, then

    c.sub.l (x)=c.sub.l (x) and e.sub.l (x)=0.

Assume now that the l-th subblock is miscorrected, i.e., the estimatederror pattern e_(l) (x) in 23 differs from the actual error patterne_(l) (x). There is the possibility that the miscorrection is a valid C₂-codeword and hence will pass through the decoder 39 shown in FIGS. 3Dand invalidate the correction capability of the two-level architecture.To prove that this cannot happen, the Appendix includes Lemma 1, ananalysis of the properties of the difference error pattern polynomialobtained as the difference between the actual and the estimated errorpattern polynomials:

    e.sub.l (x)=e.sub.l (x)-e.sub.l (x)                        (9)

Following the processing in C₁ -decoder 22, S, the number of subblockswith error bursts whose locations are known is generally increasedaccording to the proportional relationship of 2T+S≦B as T, the number ofsubblocks having error bursts with unknown locations is decreased. Thenew erasures correspond to C₁ -decoder failures that are transmitted via43 to update location register 42.

The next step in the decoding process is the computation (at 26, 27) ofthe C₂ -syndromes of the estimated C₁ -codeword c₁ (x) provided (in 25)by the C₁ -decoder 22. These syndromes are used as inputs to thecomputation of the block check syndrome estimates (at 28). Thiscomputation is identical to the one described in FIG. 2 for circuitry12, and the equations for the block syndrome byte estimates, similar toEquation (5), are as follows: ##EQU7##

The read back block check syndromes, stored after the last subblock arerestored by the RS C₃ -decoder 30. The inputs to this decoder are thenoisy r₂ B block check syndromes A_(i) (b), 0≦b≦B-1, 0≦i≦r₂ -1 and ther₃ check bytes which may also have incurred errors. The output of thedecoder 30 is the restored r₂ B block check syndromes which aresubtracted from the estimates computed in (10) to produce thedifferences ΔA_(i) (b)=A_(i) (b)-A_(i) (b) explicitly given as follows:##EQU8##

The cumulative block level syndromes are e₁ ^(i) (α^(r).sbsp.1^(+i)),0≦l≦N-1, 0≦i≦r₂ -1. By Lemma 1 these are zero if and only if the l-thsubblock has no error bursts. If this l-th subblock has an error burst,then e_(l) ^(i) is nonzero for some i in the range 0≦i≦r₂ -1. In termsof these syndromes the i-th cumulative block syndrome polynomial 0≦i≦r₂-1 is defined as follows: ##EQU9##

The block check differences ΔA_(i) (b) are the values assumed by thepolynomial defined in (12) at the locations α^(b) i.e.

    ΔA.sub.i (b)=e.sup.i (α.sup.b),0≦b≦B-1 (13)

Assume {l'₁, . . . ,l'_(T) } to be the unknown locations and (l"_(l), .. . ,l"_(S)) to be the known locations of the subblocks with errorbursts. The problem to be solved in the sequel is the computation of theunknown burst locations {l'₁, . . ,l'_(T) } and of the cumulative blocksyndromes e_(l) (a^(r) ₁ ^(+i)),0≦l≦N-1, 0≦i≦r₂ -1, for each 1 in theunion set of known and unknown locations 1ε {l'₁,l'₂, . . . ,l'_(T) }{l"₁,l"₂, . . . ,l"_(S) } of subblocks with error bursts. This problemis solved by introducing a novel interpretation of the cumulative blocksyndrome polynomials e^(i) (x), 0≦i≦r₂ -1. For a fixed i, e^(i) (x) maybe viewed as an error pattern polynomial for the whole block whichconsists of N subblocks, now viewed as a codeword in a [N, N-B, B+1]-RScode, denoted by C^(B). The unknown locations {l'₁, . . ,l'_(T) } ofsubblocks with error bursts, as well as the nonzero syndrome values e₁,0≦i≦r₂ -1 defined previously, are obtained from C^(B) -decoder 32. Thisdecoder has the required decoding capability because the cumulativeblock syndrome polynomials e^(i) (x) used at its input represent errorpatterns composed of at most S erasures and T random errors, and thedesign parameter B satisfies the inequality 2T+S≦B. By Lemma 1 it isknown that the l-th subblock has no error bursts if the block syndromese_(l) ^(i), 0≦i≦r₂ -1 are all zero and in this case the C₁ -estimatedcodeword c_(l) (x) is the decoded output which is passed throughcontroller 35 to algebraic summing circuit 37. However, if this is notthe case, i.e. the l-th subblock has an error burst, then a further stepis required.

This step, which is the last step in the deooding process of a subblockwith an error burst, is the processing of the complete string ofsyndromes e_(l) (α^(i)), 0≦i≦r₁ +r₂ -1 by the decoder 39 for the RS-codeC₁,2 which has the parameters [n, n-r₁ -r₂, r₁ +r₂ +1], This completestring of syndromes is obtained by combining (at 40) the two disjointstrings of syndromes that have been computed in the steps previouslydescribed. The first substring of syndromes, e_(l) (α^(i)),0≦i≦r₁ -1, isobtained in the first step of the decoding process as the C₁ -syndromes.The second substring, e_(l) (α^(r).sbsp.1^(+i)),0≦i≦r₂ -1, is known ascan easily be shown by writing the explicit equation for these valuesusing (9):

    e.sub.l (α.sup.r.sbsp.1.sup.+1)=e.sub.l (α.sup.r.sbsp.1.sup.+i)+e.sub.l (α.sup.r.sbsp.1.sup.+i),0≦i≦r.sub.2 -1 (14)

The terms e_(l) (α^(r).sbsp.1⁺¹),0≦i≦r₂ -1, at the right side of (14)are precisely the cumulative block syndromes e₁ ^(i), 0≦i≦r₂ -1, whichare obtained from the C^(B) -decoder 32. The remaining terms at theright side of (14), e_(l) (α^(r).sbsp.1^(+i)),0≦i≦r₂ -1 are obtained byevaluating the error pattern estimate e_(l) (x) which is computed by theC₁ -decoder 22 at the locations α^(r).sbsp.1^(+i),0≦i≦r₂ -1.

It will thus be seen that the decoding process described in this sectionand illustrated in FIGS. 3A-D provides the complete set of syndromes{e_(l) (α^(i))}, 0≦i≦r₁ +r₂ -1 required by the [n, n-r₁ -r₂, r₁ +r₂+1]-decoder 39, designated the C₁,2 -decoder This decoder completes theprocess of correcting subblocks with error bursts by producing the errorpattern e_(l) (x) which is subtracted (at 40) from c₁ (x) as shown inFIG. 3D.

It will now be apparent that if S and T denote the number of subblockswith error bursts whose locations are respectively known and unknown,the method and means of our architecture embodying the invention andabove-described, is capable of locating and correcting all thecombinations of subblocks with error bursts in a block for which thecondition 2T+S≦B is true, where B is the number of buffers 15. This isachieved without lowering the subblock level error correction capabilityby using the differences between the stored and the recomputed blockcheck syndromes as block syndrome inputs to the RS-decoder 32.

It will also be seen that the architecture above-described requires theminimum number of check bytes for a selected error correctioncapability; namely, Nr₁ +Br₂ +r₃ where, as earlier stated, N is thenumber of subblocks per block, r₁ is the number of subblock check bytesin the encoded subblock, r₂ is the number of block check bytes in theblock, and r₃ is that number of check bytes for the block check bytessufficient to equally protect all of the bytes of the block, and whereall combinations of T and S such that 2T+S≦B must be provided for.

If, however, the constraint S═O is imposed (i.e., no externallygenerated pointers to subblocks are available), then this architecturemay be modified and, as proved by Lemma 2 in the Appendix, the totalnumber of check bytes can be decreased to 2t₁ N+3(t₂ -t₁)T+2t₃ where t₁and t₂ denote the number of desired correctable random errors at thesubblock and block levels, respectively; t₁ ≦t₂ ; t₃ is the maximumnumber of errors in the block check syndromes; and T is the desirednumber of correctable subblocks having burst errors to which no pointersare available.

APPENDIX I LEMMA 1

The difference between the actual and the estimated error patternsproduced by the C₁ -decoder 22 represented as the error differencepolynomial e_(l) (x) is always a C₁ -codeword. However, if it is nonzerobecause a miscorrection due to an error burst (i.e., an error exceedingthe first level correction capability) has occurred, it is not a C₂-codeword and hence its C₂ -syndrome bytes will be nonzero. Thesenonzero C₂ -syndromes will be used to undo this miscorrection.

PROOF

From Equations (6) and (8), it is known that c_(l) (x)=c_(l) (x)+e_(l)(x)-(x) and in conjuction with (9) e_(l) (x)=c₁ (x)-c₁ (x) is easilyobtained. Since both c₁ (x) and c₁ (x) are codewords in C₁, theirdifference e_(l) (x) is also a codeword because C₁ is a linear code. Asstated above, if the l-th subblock has no error bursts, then the actualand the estimated error patterns are identical and the difference iszero. In case the l-th subblock has an error burst, its actual errorpattern exceeds the correction capability of the C₁ -ecoder 22 and theestimated error pattern, in case of miscorrection, will differ from theactual one thus resulting in a nonzero difference.

Assume now that the actual pattern e_(l) (x) consists of s erasures andt' random errors, where 2t'+s≦r₁ +r₂. In case of miscorrection the C₁-decoder 22 estimates an error pattern polynomial e_(l) (x) whose errorsare confined to the s erasures and furthermore to t' random errors suchthat 2t's≦r₁. The error pattern after miscorrection, e_(l) (x), is thedifference of the two; and thus its Hamming weight is at mosts+t'+t"≦r₁ + r₂ /2 ≦r₁ +r₂. Now consider the linear code C₁,2 (in 39)which is specified by the encoder polynomial =g₁,2 (x)=(x-1)(x-α)(x-α²). . . (x-α^(r).sbsp.1^(+r).sbsp.2⁻¹) It is thus defined as the RS-codewith the parameters [n, n-r₁ -r₂, r₁ +r₂ +1]; i.e., its minimal Hammingweight is r₁ +r₂ +1. Since the Hamming weight of e_(l) (x) is at most r₁+r₂ it cannot be a codeword in C₁,2. However e.sub. l (x) is a codewordin C₁ and since C₁,2 is specified in terms of the nonoverlappingspectral nulls of C₁ and C₂, it has been proved that it cannot be acodeword in C₂.

APPENDIX II

LEMMA 2

The total number of check bytes can be reduced to 2t₁ N+3(t₂ -t₁)T+2t₃because the block syndrome values e_(l) (α^(r).sbsp.1^(+i)) of an errordifference polynomial e_(l) (x) for a subblock with an error burst arenot all zero in the range 0≦i≦ r₂ /2 -1.

PROOF

From the proof of Lemma 1, it has been shown that e_(l) (x) is acodeword in C₁ and furthermore that its Hamming weight is at most r₁ +r₂ 2 . Now assume that the converse is true; i.e. e_(l)(α^(r).sbsp.1^(+i))=0,0≦i≦ r₂ /2 -1. Since e_(l) (x) is a codeword inC₁, e(α^(i))=0,0≦i≦r₁ + r₂ /2 -1. Since e_(l) (x) may be considered as acodeword in a [n,n-r₁ - r₂ /2 ,r₁ + r₂ /2 +1]-RS code. But this leads toa contradiction since from the proof of Lemma 1, it has been shown thatthe Hamming weight of e_(l) (x) is at most r₁ + r₂ /2 and thus we have anonzero value e_(l) ^(i) (α^(r).sbsp.1^(+i))≠0,0≦i≦ r₂ /2 - 1.

Lemma 2 suggests that using the C^(B) -decoder 32, r₂ /2 instead of r₂times is sufficient to determine the locations of the subblocks witherror bursts as well as their block syndromes e_(l) ^(i), 0≦i≦ r₂ /2 -1.To compute the remaining half e_(l), r₂ /2 ≦i≦r₂ -1, of these syndromes,since their locations are a known, the C^(B) -decoder 32 requires onlye_(l) ^(i) (α^(b))=ΔA_(i) (b), r₂ /2 i≦r₂ -1,0≦b≦T-1 rather than0≦b≦B-1. Because B=2T and r₂ =2(t_(2-t) ₁), it is unecessary to computethe T(₂ -t₁) block check bytes ΔA_(i) (b), r₂ /2 ≦i≦r₂ -1T ≦b≦B-1 andthe total number of check bytes in the architecture embodying theinvention can be reduced to 2t₁ N+3(t₂ -t₁)T+2t₃.

We claim:
 1. A method of correcting multiple error bursts in datarecorded on a storage medium in blocks, each of which comprises aplurality of subblocks of data bytes and subblock check bytes, and blocklevel syndromes from which block check syndromes are generated andstored after the last subblock of the block, from which decoded andestimated block check syndromes are generated during reading, comprisingthe steps, after reading the data, of:algebraically summing (at 31) thedecoded block check syndromes (from 30) and the estimated block checksyndromes (from 28, with 14) to provide a set of block check syndromesfor a code for locating up to T subblocks having an error burst forwhich no externally generated pointers are available; decoding (at 32)said set of syndromes for identifying each said subblock having an errorburst; and computing (in 32) block level syndromes identifying locationsand values of the errors within said subblocks having error bursts andno pointers.
 2. The method of claim 1, wherein the maximal number oferrors that can be corrected in each such subblock is r₁ +r₂, where r₁is the number of subblock check bytes and r₂ is the number of blocklevel syndromes.
 3. The method of claim 2, wherein the total number ofcheck bytes required is 2t₁ N+3(t₂ -t₁)T+2t₃ where t₁ and t₂ denote thenumber of desired correctable random errors at the subblock and blocklevels, respectively; t₁ <t₂ ; t₃ is the maximum number of errors in ther₂ block level syndromes; and T is the desired number of correctablesubblocks having burst errors to which no pointers are available.
 4. Themethod of claim 1, wherein the minimum number of check bytes for aselected error correction capability is Nr₁ +Br₂ +r₃ where N is thenumber of subblocks per block, r₁ is the number of subblock check bytesin the encoded subblock, r₂ B is the number of block check syndromes inthe block, and r₃ is that number of check bytes for the block checksyndromes sufficient to equally protect all of the bytes of the block,and S and T denote respectively the number of correctable subblocks witherror bursts for which externally generated pointers are and are notavailable, and where all combinations of T and S such that 2T+S≦B mustbe provided for.
 5. The method of claim 1, including the further stepof:algebraically summing the computed block level syndromes (from 32)with the block level syndromes (from 26) for an estimated error patternto produce (in 34) block level syndromes for a true error pattern for upto T subblocks having error bursts.
 6. A method of correcting multipleerror bursts in data recorded on a storage medium in blocks, each ofwhich comprises subblocks of data bytes and subblock check bytes, andblock level syndromes from which block check syndromes are generated andstored after the last subblock of the block, from which ECC syndromesare generated during reading, said method comprising the steps, duringwriting of the data, of:encoding (at 10) the data in all subblocks of ablock; generating (at 11) r₂ block level syndromes for said subblocks;multiplying (at 13) said r₂ syndromes by a series of preselectedweighting factors (α¹. . . α¹(B- 1)) according to as location index l ofthe subblock within the block; storing each of the r₂ syndromes asmultiplied by a respective weighting factor in a corresponding one of Bbuffers; cumulatively summing (at 14) the contents of said B for all thesubblocks within the block to produce r₂ B block check syndromes forthat block; after writing the last subblock of the block, encoding ther₂ B block check syndromes (at 17) to provide r₃ check bytes to protectthe r₂ B block check syndromes; and storing (at 9) the factor weightedsums and r₃ check bytes (r₂ B+r₃) on the medium as block checksyndromes.
 7. The method of claim 6, wherein the number of correctablesubblocks with error bursts is determined by 2T+S≦B, where T denotes thenumber of correctable subblocks with error bursts for which noexternally generated location pointer is available and S denotes thenumber of correctable subblocks with error bursts for which externallygenerated pointers are available.
 8. The method of claim 6, includingthe further steps, during reading of the data, of:buffering (at 18) dataas read from each subblock of the block; computing (at 19) subblocksyndromes for each subblock; decoding (at 22, via 21) those of thesubblock syndromes that do not correspond to a subblock with an errorburst for producing (in 23) an estimated error pattern for each of thelast-mentioned subblocks; and correcting all correctable errors in saidlast-mentioned subblocks by algebraically summing (at 24) theirrespective estimated error patterns (in 23) the buffered subblock data(from 18) as read to provide corrected subblock data.
 9. The method ofclaim 8, including the further steps, for each block, of:computing blocklevel syndromes from both the estimated error patterns (at 26) andcorrected subblock data (at 27); multiplying (at 28, with 13) the blocklevel syndromes for the corrected subblock data by said series ofpreselected weighting factors (α¹. . . α¹ (B-1)) according to thelocation index of the subblock within the block; storing each syndromeas multiplied by a respective weighting factor in a corresponding one ofB buffers; cumulatively summing (at 28, with 14) the contents of said Bbuffers as stored during the preceding step to produce estimated blockcheck syndromes covering all subblocks of the block; decoding (at 30)the last-mentioned block check syndromes as encoded; and algebraicallysumming (at 31) the decoded block check syndromes (from 30) with theestimated block check syndromes (from 28) to provide a set of blockcheck syndromes for a code for locating subblocks having error burstsfor which no externally generated pointers are available.
 10. The methodof claim 9, including the further steps, for each block, of:decoding (at32) said set of block check syndromes to generate (up to T) algebraicpointers for identifying the subblocks with error bursts for which noexternally generated pointers are available; computing (at 32) blocklevel syndromes identifying any errors due to miscorrection duringdecoding of the subblock syndromes; and algebraically summing (at 33)the computed block level syndromes (from 32) identyifying miscorrectionswith the block level syndromes computed (at 26) from the estimated errorpattern syndromes to generate the block level syndromes for a true errorpattern (in 34).
 11. The method of claim 10, including the further stepof:correcting (at 37) all subblocks without error bursts followinggeneration of the algebraic pointers that locate all error bursts. 12.The method of claim 10, including the further steps, for each block,of:buffering (at 20) the computed subblock syndromes; decoding (at 39)the buffered computed subblock syndromes (from 20) and the block levelsyndromes (in 34) of the true error pattern, to generate an estimatedburst error pattern; and algebraically summing (at 41) the estimatedburst error pattern with the buffered data as read (from 18) to correctall errors in the subblocks having error bursts.
 13. The method of claim6, wherein the maximal number of errors that can be corrected in eachsuch subblock is r₁ +r₂, where r₁ is the number of subblock check bytesand r₂ is the number of block level syndromes.
 14. The method of claim6, wherein the number of correctable subblocks with error bursts isdetermined by 2T≦B where T denotes the number of correctable subblockswith error bursts for which no externally generated location pointer isavailable.
 15. The method of claim 6, wherein the number of correctablesubblocks with error bursts is determined by S≦B where S denotes thenumber of correctable subblocks with error bursts for which externallygenerated pointers are available.
 16. Apparatus for correcting multipleerror bursts in data recorded on a storage medium in blocks, each ofwhich comprises a plurality of subblocks of data bytes and subblockcheck bytes, and block level syndromes from which block check syndromesare generated and stored after the last subblock of the block, fromwhich decoded and estimated block check syndromes are generated duringreading, said apparatus comprising:means operative following reading ofthe data for algebraically summing (at 31) the decoded block checksyndromes (from 30) and the estimated block check syndromes (from 28) toprovide a set of block check syndromes for a code for locating subblockshaving an error burst for which no externally generated pointer isavailable; means (32) for decoding said set of block check syndromes foridentifying each subblock having an error burst; and means (32) forcomputing block level syndromes identifying the locations and the valuesof the errors within said subblocks having error bursts and no pointers.17. Apparatus for correcting multiple error bursts in data recorded on astorage medium in blocks, each of which comprises subblocks of databytes and subblock check bytes, and block level syndromes from whichblock check syndromes are generated and stored after the last subblockof the block for which ECC syndromes are generated during reading, saidapparatus comprising;means (10) operative during writing of the data forencoding the data in all subblocks of a block; means (11) for generatingblock level syndromes for said subblocks; means (13) for multiplyingsaid syndromes by a series of preselected weighting factors (a¹. . .α^(l)(B-1)) according to a location index l of the subblock within theblock; B buffers each for storing a syndrome as multiplied by adifferent weighting factor; means (14) for cumulatively summing thecontents of said B buffers for all the subblocks within the block toproduce block check syndrome (r₂ B) for that block; and means (including17), operative after writing the last subblock of the block, forencoding said last-mentioned block check syndromes (r₂ B) to providecheck bytes (r₃) to protect said block check syndromes (r₂ B) so thatencoded sums (r₂ B+r₃) of said block check syndromes and check bytes maybe stored on the medium as block check syndromes.
 18. The apparatus ofclaim 17, comprising:means (18), operative during reading of the data,for buffering the data as read from each subblock of the block; means(19) for computing subblock syndromes for each subblock; means (22) fordecoding those of the subblock syndromes that do not correspond to asubblock with an error burst for producing an estimated error patternfor each of the last-mentioned subblocks; and means (24) for correctingall correctable errors in said last-mentioned subblocks by algebraicallysumming their respective estimated error patterns with the bufferedsubblock data as read (from 18) to provide corrected subblock data. 19.The apparatus of claim 18, comprising:means (26, 27) for computing blocklevel syndromes from the estimated error patterns and corrected subblockdata; means (28) for multiplying the block syndromes for the correctedsubblock data by said series of preselected weighting factors accordingto (α¹. . . α¹ (B-1)) according to a location index 1 of the subblockwithin the block, each syndrome as multiplied by a respective weightingfactor being stored in a corresponding one of said B buffers; means (28)for cumulatively summing contents of said B buffers to produce estimatedblock check syndromes covering all subblocks of the block; means (30)for decoding the encoded last-mentioned block check syndromes; and means(31) for algebraically summing the decoded block check syndromes withthe estimated block check syndromes to provide a set of block checksyndromes for a code for locating subblocks having error bursts forwhich no externally generated pointers are available.
 20. The apparatusof claim 19, comprising:means (32) for decoding said set of syndromesand generating algebraic pointers for identifying the subblocks witherror bursts; means (32) for computing block level syndromes identifyingany errors due to miscorrection during decoding of the subblocksyndromes; and means (33) for algebraically summing the computed (by 26,27) block level syndromes identifying miscorrections with the blocklevel syndromes computed from the estimated error pattern syndromes togenerate the block level syndromes for a true error pattern.
 21. Theapparatus of claim 20, comprising:means (37) for correcting allsubblocks without error bursts following generation of the algebraicpointers that locate all error bursts.
 22. The apparatus of claim 20,comprising:means (20) for buffering the computed subblock syndromes;means (39) for decoding the buffered computed subblock syndromes (from20) and the block level syndromes (in 34) of the true error pattern, togenerate an estimated burst error pattern; and means (41) foralgebraically summing the estimated burst error pattern with thebuffered data as read (from 18) to correct all errors in the subblockshaving error bursts.